#ifndef _ADD_H_
// 如果没有定义_ADD_H才会执行一下的代码
#define _ADD_H_

#include<iostream>
#include<sys/types.h>
#include<sys/ipc.h>
#include<sys/shm.h>
#include<cerrno>
#include<cstring>

#define PARHNAME "."
#define DEFINEKEY 0x666
#define MAX_SIZE 4096 // 4096个字节正好是4kb

// 一条龙服务，外面什么参数都并不用传入
int GetKey()
{
    key_t key = ftok(PARHNAME,DEFINEKEY);
    if(key < 0)
    {
       std::cout << errno << "错误原因" << strerror(errno) << std::endl;
       exit(2);
    }
    //
    std::cout << "key = " << key << std::endl;
    printf("key = 0x%x",key);

    return key;
}

int CreatMomery()
{   
    int key = GetKey();
    int ret =  shmget(key , MAX_SIZE , IPC_CREAT | IPC_EXCL );
    if(ret < 0)
    {
       std::cout << errno << "错误原因" << strerror(errno) << std::endl;
       exit(2);
    }      
     
    return ret;
}

int GetMomery()
{
    int key = GetKey();
    int ret =  shmget(key , MAX_SIZE , IPC_CREAT);
    if(ret < 0)
    {
       std::cout << errno << "错误原因" << strerror(errno) << std::endl;
       exit(2);
    }      
    return ret;
}

#endif
